Crate bevy_tasks

source ·
Expand description

bevy_tasks

A refreshingly simple task executor for bevy. :)

This is a simple threadpool with minimal dependencies. The main usecase is a scoped fork-join, i.e. spawning tasks from a single thread and having that thread await the completion of those tasks. This is intended specifically for bevy as a lighter alternative to rayon for this specific usecase. There are also utilities for generating the tasks from a slice of data. This library is intended for games and makes no attempt to ensure fairness or ordering of spawned tasks.

It is based on async-executor, a lightweight executor that allows the end user to manage their own threads. async-executor is based on async-task, a core piece of async-std.

Dependencies

A very small dependency list is a key feature of this module

├── async-executor
│   ├── async-task
│   ├── concurrent-queue
│   │   └── cache-padded
│   └── fastrand
├── num_cpus
│   └── libc
├── parking
└── futures-lite

Modules

Structs

A newtype for a task pool for CPU-intensive work that may span across multiple frames
A newtype for a task pool for CPU-intensive work that must be completed to deliver the next frame
A newtype for a task pool for IO-intensive work (i.e. tasks that spend very little time in a “woken” state)
A TaskPool scope for running one or more non-'static futures.
Wraps async_executor::Task, a spawned future.
A thread pool for executing tasks. Tasks are futures that are being automatically driven by the pool on threads owned by the pool.
Used to create a TaskPool

Traits

ParallelIterator closely emulates the std::iter::Iterator interface. However, it uses bevy_task to compute batches in parallel.
Provides functions for mapping read-only slices across a provided TaskPool.
Provides functions for mapping mutable slices across a provided TaskPool.

Functions

Gets the logical CPU core count available to the current process.
Used by bevy_core to tick the global tasks pools on the main thread. This will run a maximum of 100 local tasks per executor per call to this function.